﻿

Общие сведения

Touhou Toolkit (коротко — thtk) — это инструмент для распаковки и модификации файлов ресурсов игр серии Touhou. Он позволяет извлекать и изменять игровые спрайты, текстуры, графические элементы интерфейса; внутриигровые тексты; скрипты уровней, задающие движения противников и формулы атак; демо-реплеи и игровые звуки. Он не позволяет работать с музыкой (кроме midi-музыки в 6-8 частях) и файлами сохранений.

Touhou Toolkit включает четыре консольных приложения: thdat обрабатывает базовые dat-файлы игры, остальные три — внутренние файлы, получаемые после их распаковки: thanm — графику, thmsg — диалоги, thecl — скрипты. Он полноценно работает с играми, начиная с шестой части. thdat также может работать с dat-файлами игр для PC-98 (как правило, эти игры хранятся в образах дисков с расширением hdi, но их можно распаковать), но получаемые при распаковке файлы, за исключением текстовых, не обрабатываются thtk. Кроме того, программа может работать и с файлами сторонних игр, имеющих формат, совместимый с форматом какой-либо части Touhou (однако может выдавать необоснованные предупреждения, если формат названий файлов модификации отличается от формата названий файлов соответствующей части Touhou).

Touhou Toolkit является консольным приложением, а данная программа — графическим интерфейсом для него. В первую очередь необходимо указать путь к папке с распакованным thtk. Также можно указать путь, по которому находятся игры. Сам thtk можно скачать с репозитория на Google Code, в его состав также входит с правка.

THDAT

Первым этапом работы с thtk является распаковка основного dat-файлы игры. Выберите нужную игру в главном меню (формат dat-файлов менялся от игры к игре), в поле «Папка» укажите папку, в которую его нужно распаковать, в поле «Файл» — адрес нужного dat-файла. Указывайте основной dat-файл, имеющий название формата th№(e|r).dat (кроме шестой части, см. далее), файлы thbgm.dat и score.dat посредством thtk распаковать нельзя. В шестой части игровой контент разделён на шесть дат-файлов, содержащих:

- CM — спрайты пуль, диалоговые изображения и мини-спрайты главных героев

- ED — тексты и изображения из эндингов и титров

- IN — звуки событий, тексты интерфейса

- MD — midi-музыку

- ST — скрипты атак, фоны уровней и спеллкарт, мини-спрайты врагов и боссов и диалоговые изображения последних, тексты диалогов

- TL — изображения и тексты меню.

Назначение кнопок:

- «Распаковать архив» распаковывает dat-файл в указанную папку.

- «Получить список файлов» создаёт в подпапке \lists основной папки программы список файлов архива в формате txt. Этот список необходим для сборки dat-файла, поэтому изменять его не рекомендуется — это может повлиять на работоспособность игры. Файл списка также создаётся автоматически при распаковке архива.

- «Создать архив» создаёт из файлов в указанной папке новый dat-файл. Если целевой dat-файл уже существует, он будет переименован перед выполнением действия (получит дополнительное расширение .bkp№), если в настройках включена опция «Создавать резервную копию». Иначе он будет заменён.

После распаковки в целевой папке появятся файлы игрового контента. Некоторые из них (например, демо-реплеи, изображения и звуки) можно заменять непосредственно. anm-, ecl- и msg-файлы подлежат дальнейшей распаковке другими программами из состава thtk. Остальные, например, .sht и .std, thtk не обрабатывает.

THANM

Файлы с расширением .anm содержат игровую графику в виде файлов в формате PNG, а также скрипты, описывающие поведение графических элементов. Они распаковываются и собираются аналогично dat-файлам с двумя отличиями:

- Программа автоматически генерирует предлагаемое имя целевой папки для распаковки, совпадающее с именем anm-файла. Кроме того, файлы внутри anm-архива организованы в каталожную структуру, которая воссоздаётся внутри целевой папки при распковке. Изменение структуры или имён каталогов приведёт к неработоспособности игры.

- Информацией для создания архива служит не простой список файлов, а особый текстовый файл — спецификация. Он создаётся при распаковке архива, либо может быть создан нажатием кнопки "Получить спецификацию". Предлагаемое имя спецификации также генерируется программой автоматически.

Утилита также предоставляет возможность заменить одно из изображений в anm-файле, не производя полной пересборки архива. Для этого в строке «Имя» укажите заменяемую позицию (для её выбора воспользуйтесь кнопкой «...» справа от поля ввода), а в строке «Файл» - новую версию изображения, после чего нажмите «Заменить файл в архиве».

THMSG

В msg-файлах хранятся игровые диалоги. Такие файлы могут иметь название формата *.msg (в играх начиная с девятой) или msg*.dat (в 6-8), каждый из них содержит один txt-файл (в кодировке Shift JIS в оригинальных файлах, ASCII в англофицированных). После выбора файла для распаковки программа автоматически сгенерирует имя целевого файла в подпапке /MSG. Кнопка «Выгрузить архив» распаковывает msg-файл в текстовый файл, кнопка «Создать архив» проводит обратную процедуру. Начиная с десятой части, тексты концовок и титров нужно распаковывать со флагом Ending dialogue, этот флаг автоматически проставляется при выборе msg-файлов с соответствующим названием.

THECL

В ecl-файлах хранятся скрипты, задающие движения противников, формулы атак и пр. Их внутреннее устройство и обращение с ними в программе аналогичны описаным выше для msg-файлов. На странице thtk на GoogleCode имеется неполное описание скриптового языка, используемого в этих файлах.

Известные проблемы

Все перечисленные здесь проблемы вызваны самим thtk, а не данным GUI, т.к. воспроизводятся и при прямом использовании консольного thtk.

- Существует проблема с англофицированными дат-файлами девятой части. При их распаковке консоль сообщает об ошибках, но содержимое дат-файла распаковывается полностью или почти полностью. Однако дат-файл, полученный сборкой такой папки, повреждён и приводит к краху игры. С файлом оригинальной японской версии эта проблема отсутствует.

- При создании ecl-файла может возникнуть ошибка, из-за которой собираемый файл будет повреждён, а дат-файл с ним будет приводить к краху игры. Причина бага в том, что thecl некорректно о брабатывает экранированные двойные кавычки (символы \"), используемые в названиях спеллкарт. Проблему решает замена всех вхождений данной комбинации на любую другую, например, одиночную кавычку.